鐵人賽
有三種做法
const cat = {eyes: 2, legs: 4}
function Animal(eyes, legs){
this.eyes = eyes;
this.legs = legs;
this.characteristics = function(){
console.log('I have' + this.eyes + 'eyes and' + this.legs+ 'legs')
}
}
const horse = new Animal (2,4);
horse.characteristics();
const Animal = {
eyes: 0,
legs: 0,
characteristics: function(){
return 'I have' + this.eyes + 'eyes and' + this.legs+ 'legs'
}
}
const cat = Object.create(Animal)
cat.eyes = 6;
cat.legs = 1;
console.log(cat)
// 印出來的物件
[object Object] {
characteristics: function(){
return 'I have' + this.eyes + 'eyes and' + this.legs+ 'legs'
},
eyes: 6,
legs: 1
}
補充:可用 object.create(null,{...})做出一個乾淨的物件,這裡指的乾淨是指不會有原生 Object 所提供的屬性與方法
JS 沒有原生的 class 是用原型繼承的方法來讓沒有屬性的物件去存取其他物件的屬性。
Object.setPrototypeof(繼承者, 原型)
舉例: Object.setPrototypeof(a, b)
讓b成為a的原型